#ifndef _BUMPER_H_
#define _BUMPER_H_

/**
 * bumperPressed returns 1 if the bumper at a particular digital
 * port is pressed. Returns 0 otherwise.
 *
 * @requires the given digital port is a valid port
 * @effects returns 1 if the bumper at the given port is pressed.
 *			Otherwise, returns 0
 * @modifies none
 */
uint8_t bumperPressed(uint8_t digital_port);

/**
 * wallLeftBumperPressed returns 1 if the left wall-following
 * bumper is pressed. Otherwise, returns 0
 *
 * @requires none
 * @effects returns 1 if the left wall-following bumper is pressed.
 *			Otherwise, returns 0
 * @modifies none
 */
uint8_t wallLeftBumperPressed(void);

/**
 * wallRightBumperPressed returns 1 if the right wall-following
 * bumper is pressed. Otherwise, returns 0.
 *
 * @requires none
 * @effects returns 1 if the right wall-following bumper is pressed.
 *			Otherwise, returns 0
 * @modifies none
 */
uint8_t wallRightBumperPressed(void);

/**
 * frontBumperPressed returns 1 iff the bumper sensor in front of the
 * robot is pressed. Returns 0 otherwise.
 *
 * @requires none
 * @effects returns 1 iff the front bumper is pressed.
 * 			Otherwise, returns 0
 * @modifies none
 */ 
uint8_t frontBumperPressed(void);

/**
 * backBumperPressed returns 1 if the bumper sensor at the back
 * of the robot is pressed. Returns 0 otherwise.
 *
 * @requires none
 * @effects returns 1 if the bumper at the back of the robot is pressed.
 *			Otherwise, returns 0
 * @modifies none
 */
uint8_t backLeftBumperPressed(void);
uint8_t backRightBumperPressed(void);

#endif
